From: Dirkjan Ochtman Date: Wed, 4 Apr 2018 18:07:57 +0000 (+0200) Subject: Revert serialization of features to string type X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~1^2~98^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=540bd4585f7b7d05641531f74afbc408f5ee3009;p=cargo.git Revert serialization of features to string type --- diff --git a/src/cargo/core/summary.rs b/src/cargo/core/summary.rs index 1c8d95b36..83846c822 100644 --- a/src/cargo/core/summary.rs +++ b/src/cargo/core/summary.rs @@ -3,6 +3,9 @@ use std::mem; use std::rc::Rc; use semver::Version; + +use serde::{Serialize, Serializer}; + use core::{Dependency, PackageId, SourceId}; use core::interning::InternedString; @@ -190,7 +193,7 @@ fn build_feature_map( /// * A feature in a depedency /// /// The selection between these 3 things happens as part of the construction of the FeatureValue. -#[derive(Clone, Debug, Serialize)] +#[derive(Clone, Debug)] pub enum FeatureValue { Feature(InternedString), Crate(InternedString), @@ -227,4 +230,20 @@ impl FeatureValue { } } +impl Serialize for FeatureValue { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + use self::FeatureValue::*; + match *self { + Feature(ref f) => serializer.serialize_str(f), + Crate(ref c) => serializer.serialize_str(c), + CrateFeature(ref c, ref f) => { + serializer.serialize_str(&[c.as_ref(), f.as_ref()].join("/")) + } + } + } +} + pub type FeatureMap = BTreeMap>; diff --git a/tests/testsuite/metadata.rs b/tests/testsuite/metadata.rs index 34720c4b2..074d5499d 100644 --- a/tests/testsuite/metadata.rs +++ b/tests/testsuite/metadata.rs @@ -192,9 +192,7 @@ optional_feat = [] ], "features": { "default": [ - { - "Feature": "default_feat" - } + "default_feat" ], "default_feat": [], "optional_feat": []